/**
 * 
 */
package UDPTools.Settings;

import UDPTools.UDPListener;
import UDPTools.UDPSender;

/**
 * La classe UDPSettings définie un ensemble variables statiques utile pour les 
 * classes UDPSender et UDPListerner.
 * <ul>
 * <li> UDP_PORT_ECOUTE 
 * <li> UDP_PORT_ENVOI 
 * <li> TCP_PORT_MAX 
 * <li> TCP_PORT_MIN
 * <li> UDP_BUFFER_SIZE
 * <li> NETWORK_BROADCAST
 * </ul>
 * Elle définie également une methode <code>checkByteMessage</code> qui teste la
 * taille des messages.
 *
 * @author      Frank Djomo
 * @author      Christelle SIAGO HAPPI
 * @author      djomopoueme@gmail.com
 * @author      christelle.siagohappi@gmail.com
 * @version     1.0
 * @see UDPSender
 * @see UDPListener
 */
public class UDPSettings{
	

	/**
	 * Ceci correspond au numéro de port sur lequel tout les signaux
	 * envoyés en UDP arriveront
	 */
	public  static final int UDP_PORT_ECOUTE=49900;
	/**
	 * Ceci correspond au numéro de port sur lequel tout les signaux
	 * envoyés en UDP partiront
	 */
	public static final int UDP_PORT_ENVOI=49600;  
        /**
	 * Ceci correspond au numéro de port maximum sur lequel le serveur TCP 
         * de transfert de fichier peut ecouter
	 */
	public static final int TCP_PORT_MAX = 65535 ;     
        /**
	 * Ceci correspond au numéro de port minimum ur lequel le serveur TCP 
         * de transfert de fichier peut ecouter
	 */
        public static final int TCP_PORT_MIN = 50000 ;
        /**
	 * Ceci correspond au numéro de port maximum sur lequel le serveur TCP 
         * de transfert de fichier peut ecouter
	 */
	public static final int UDP_PORT_MAX = 49990 ;     
        /**
	 * Ceci correspond au numéro de port minimum ur lequel le serveur TCP 
         * de transfert de fichier peut ecouter
	 */
        public static final int UDP_PORT_MIN = 49500 ;
	 /**
	 /**
	  * Taille du buffer de reception UDP, cela signifie qu'il faut
	  * interdir à l'utilisateur d'envoyer un message dont la taille depasse
          *  5 Mo
	  */
	 public static final int UDP_BUFFER_SIZE =  1024*1024*5;
         /**
	 /**
	  * Adresse de broadcast di reseau local
	  */
	 public static String NETWORK_BROADCAST="255.255.255.255";
	 
         /**
        * Verifie si la taille du message à envoyer est conforme
        * @param  messageByte   Tableau d'octect du message à envoyer 
        * @return               <code>true</code> si le message est valide
                                <code>false</code> sinon
        */
        public static boolean checkByteMessage(byte[] messageByte) {
         return isByteMessageConformed(messageByte);
        }

        /**
        * Teste si un message est valide
        * @param message Le message à tester
        * @return true if ckeck is succedd
        */
        private static boolean isByteMessageConformed(byte[] message) {
          return (message != null && message.length <= UDPSettings.UDP_BUFFER_SIZE);
        }

	
}
